home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Libris Britannia 4
/
science library(b).zip
/
science library(b)
/
MATHEMAT
/
STATISTI
/
0850B.ZIP
/
SET2.ARC
/
CORR.PAS
< prev
next >
Wrap
Pascal/Delphi Source File
|
1979-12-31
|
6KB
|
220 lines
VAR SWITCH14,SWITCH4,DF,TEMP,Y,NUMSAMPS,I,SWITCH:INTEGER;
COEFF,XCOOR,YCOOR,SUMX,SUMY,SUMXSQR,SUMYSQR, SUMXTIMESY,
A1,A2,A3,A4,L,X,FACTOR1,FACTOR2,RIGHTTAIL,TVALUE,CRIT52,CRIT51,CRIT12,CRIT11:REAL;
SWITCH13,SWITCH3,C:CHAR;
SWITCH2,LESSTHANONE:BOOLEAN;
{$I B;REALRAIS}
{$I B:INTRAISE}
PROCEDURE READDATA1;
VAR XFILE:TEXT;
X:REAL;
I,MAXNUM:INTEGER;
FILENAME:STRING[12];
BEGIN
WRITE ('ENTER FILE NAME TO CALL THE DATA: ');
READLN (FILENAME);
IF SWITCH4=1 THEN BEGIN
WRITELN (LST,'ENTER FILE NAME TO CALL THE DATA: ',FILENAME);
END;
ASSIGN (XFILE,FILENAME);
RESET (XFILE);
READLN (XFILE,X);
READLN (XFILE,X);
MAXNUM:=ROUND(X);
WRITELN ('NUMBER OF PAIRS = ',MAXNUM);
NUMSAMPS:=MAXNUM;
IF SWITCH4=1 THEN BEGIN
WRITELN (LST,'NUMBER OF PAIRS = ',MAXNUM);
END;
FOR I:=1 TO MAXNUM DO
BEGIN
READLN (XFILE,X);
WRITELN ('ITEM X ',I:4,' = ',X:8:3);
XCOOR:=X;
IF SWITCH4=1 THEN BEGIN
WRITELN (LST,'ITEM X ',I:4,' = ',X:8:3);
END;
READLN (XFILE,X);
YCOOR:=X;
WRITELN (' ':5,'Y ',I:4,' = ',X:8:3);
IF SWITCH4=1 THEN BEGIN
WRITELN (LST,' ':5,'Y ',I:4,' = ',X:8:3);
END;
SUMX:=SUMX + XCOOR;
SUMY:=SUMY + YCOOR;
SUMXSQR:=SUMXSQR + XCOOR * XCOOR;
SUMYSQR:=SUMYSQR + YCOOR * YCOOR;
SUMXTIMESY:=SUMXTIMESY + XCOOR * YCOOR;
END;
CLOSE (XFILE);
END;
PROCEDURE READDATA;
BEGIN
WRITE ('NUMBER OF SAMPLES: ');
READLN (NUMSAMPS);
IF SWITCH4=1 THEN BEGIN
WRITELN (LST,'NUMBER OF SAMPLES: ',NUMSAMPS);
END;
FOR I:=1 TO NUMSAMPS DO
BEGIN
WRITE ('COORDINATES OF POINT ',I,': ');
WRITE ('X: ');
READLN (XCOOR);
WRITE (' ':25);
IF I>9 THEN WRITE (' ');
WRITE ('Y: ');
READLN (YCOOR);
IF SWITCH4=1 THEN BEGIN
WRITE (LST,'COORDINATES OF POINT ',I,': ');
WRITE (LST,'X: ');
WRITELN (LST,XCOOR:8:3);
WRITE (LST,' ':25);
IF I>9 THEN WRITE (LST,' ');
WRITE (LST,'Y: ');
WRITELN (LST,YCOOR:8:3);
END;
SUMX:=SUMX + XCOOR;
SUMY:=SUMY + YCOOR;
SUMXSQR:=SUMXSQR + XCOOR * XCOOR;
SUMYSQR:=SUMYSQR + YCOOR * YCOOR;
SUMXTIMESY:=SUMXTIMESY + XCOOR * YCOOR;
END;
END;
PROCEDURE FINDCRITICALVALUES (DEGFREE:INTEGER);
VAR TEMP1,TEMP2:REAL;
PROCEDURE VALS(C52,C51,C12,C11:REAL);
BEGIN
CRIT52:=C52;
CRIT51:=C51;
CRIT12:=C12;
CRIT11:=C11;
END;
PROCEDURE LOOKUP (DF:INTEGER);
BEGIN
CASE DF OF
1: VALS(0.988, 0.997, 0.9995, 0.9999);
2: VALS(0.900, 0.950, 0.980, 0.990);
3: VALS(0.805, 0.878, 0.934, 0.959);
4: VALS(0.729, 0.811, 0.882, 0.917);
5: VALS(0.669, 0.754, 0.833, 0.874);
6: VALS(0.622, 0.707, 0.789, 0.824);
7: VALS(0.582, 0.666, 0.750, 0.798);
8: VALS(0.549, 0.632, 0.716, 0.765);
9: VALS(0.512, 0.602, 0.685, 0.735);
10: VALS(0.497, 0.576, 0.658, 0.708);
END;
END;
BEGIN
LOOKUP (DEGFREE);
IF NUMSAMPS<13 THEN BEGIN
WRITE ('THE CRITICAL VALUE AT .05 (ONE TAILED) IS: ');
WRITELN (CRIT52:5:4);
WRITE ('THE CRITICAL VALUE AT .05 (TWO TAILED) IS: ');
WRITELN (CRIT51:5:4);
WRITE ('THE CRITICAL VALUE AT .01 (ONE TAILED) IS: ');
WRITELN (CRIT12:5:4);
WRITE ('THE CRITICAL VALUE AT .01 (TWO TAILED) IS: ');
WRITELN (CRIT11:5:4);
IF SWITCH4=1 THEN BEGIN
WRITE (LST,'THE CRITICAL VALUE AT .05 (TWO TAILED) IS: ');
WRITELN (LST,CRIT52:5:4);
WRITE (LST,'THE CRITICAL VALUE AT .05 (ONE TAILED) IS: ');
WRITELN (LST,CRIT51:5:4);
WRITE (LST,'THE CRITICAL VALUE AT .01 (TWO TAILED) IS: ');
WRITELN (LST,CRIT12:5:4);
WRITE (LST,'THE CRITICAL VALUE AT .01 (ONE TAILED) IS: ');
WRITELN (LST,CRIT11:5:4);
END;
END
ELSE BEGIN
TVALUE:=(COEFF*SQRT(NUMSAMPS-2))/SQRT(1-SQR(COEFF));
A1:=0.196854;
A2:=0.115194;
A3:=0.000344;
A4:=0.019527;
Y:=1;
TVALUE:=SQR(TVALUE);
DF:=NUMSAMPS-2;
LESSTHANONE:=FALSE;
IF TVALUE<1.0 THEN BEGIN
TVALUE:=1/TVALUE;
TEMP:=Y;
Y:=DF;
DF:=TEMP;
LESSTHANONE:=TRUE;
END;
FACTOR1:=2/(9 * Y);
FACTOR2:=2/(9 * DF);
L:=ABS(REALRAIS(TVALUE,0.333333)*(1-FACTOR2)-1+FACTOR1)/
SQRT((FACTOR1+REALRAIS(TVALUE,0.666667)*FACTOR2));
IF DF<4 THEN L:=L*(1+0.08*INTRAISE(DF,3));
X:=0.25/INTRAISE((1+L*(A1+L*(A2+L*(A3+L*A4)))),4);
IF LESSTHANONE THEN RIGHTTAIL:=1-X
ELSE RIGHTTAIL:=X;
WRITELN ('SIGNIFICANCE = ',RIGHTTAIL:7:6);
IF SWITCH4=1 THEN BEGIN
WRITELN (LST,'SIGNIFICANCE = ',RIGHTTAIL:7:6);
END;
END;
END;
BEGIN
REPEAT
WRITELN ('CORRELATION COEFFICIENT');
WRITE ('DO YOU WANT A PRINTOUT (Y/N)');
READLN (SWITCH3);
IF SWITCH3='Y' THEN SWITCH4:=1;
IF SWITCH3='y' THEN SWITCH4:=1;
IF SWITCH4=1 THEN BEGIN
WRITELN (LST,'CORRELATION COEFFICIENT');
END;
SUMX:=0;
SUMY:=0;
SUMXSQR:=0;
SUMYSQR:=0;
SUMXTIMESY:=0;
WRITE ('DO YOU WISH DISK ENTRY?');
READLN (SWITCH13);
IF SWITCH13='Y' THEN SWITCH14:=1;
IF SWITCH13='y' THEN SWITCH14:=1;
IF SWITCH14<>1 THEN READDATA;
IF SWITCH14=1 THEN READDATA1;
BEGIN
IF (SUMX * SUMX=NUMSAMPS * SUMXSQR) OR (NUMSAMPS * SUMYSQR = SUMY * SUMY)
THEN BEGIN
WRITELN ('COEFFICIENT CANNOT BE CALCULATED');
IF SWITCH4=1 THEN BEGIN
WRITELN (LST,'COEFFICIENT CANNOT BE CALCULATED');
END;
END
ELSE BEGIN
COEFF:=(NUMSAMPS * SUMXTIMESY - SUMX * SUMY)/ SQRT ((NUMSAMPS * SUMXSQR
-SUMX * SUMX) * (NUMSAMPS * SUMYSQR - SUMY * SUMY));
WRITELN ('LINEAR CORRELATION COEFFICIENT');
WRITELN ('CORRELATION COEFFICIENT = ',COEFF:7:6);
IF SWITCH4=1 THEN BEGIN
WRITELN (LST,'LINEAR CORRELATION COEFFICIENT');
WRITELN (LST,'CORRELATION COEFFICIENT = ',COEFF:7:6);
END;
FINDCRITICALVALUES (NUMSAMPS-2);
WRITE ('DO YOU WANT ANOTHER RUN, (Y/N): ');
READLN (C);
WHILE NOT (C IN ['Y','y','n','N']) DO
BEGIN
WRITE ('TYPE Y FOR YES, OR N FOR NO: ');
READLN (C)
END;
SWITCH2:=C IN ['N','n']
END;
END;
UNTIL SWITCH2
END.